home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / m2posx10.zoo / m2posix.10 / test / tsys.mpp < prev    next >
Encoding:
Text File  |  1993-08-26  |  4.0 KB  |  153 lines

  1. MODULE tsys;
  2. __IMP_SWITCHES__
  3. #ifdef HM2
  4. #ifdef __LONG_WHOLE__
  5. (*$!i+: Modul muss mit $i- uebersetzt werden! *)
  6. (*$!w+: Modul muss mit $w- uebersetzt werden! *)
  7. #else
  8. (*$!i-: Modul muss mit $i+ uebersetzt werden! *)
  9. (*$!w-: Modul muss mit $w+ uebersetzt werden! *)
  10. #endif
  11. #endif
  12. (* Test- und Anwendungsbeispiel fuer Modul 'sys'.
  13.  *
  14.  * 20-Aug-93, hk
  15.  *)
  16.  
  17. IMPORT e;
  18.  
  19. FROM PORTAB IMPORT
  20. (* TYPE *) SIGNEDLONG;
  21.  
  22. FROM sys IMPORT
  23. (* TYPE *) PConfVal, SConfVal, UtsnameRec,
  24. (* PROC *) pathconf, sysconf, time, uname;
  25.  
  26. FROM cstr IMPORT
  27. (* PROC *) strerror;
  28.  
  29. FROM lib IMPORT
  30. (* PROC *)ltoa;
  31.  
  32. FROM InOut IMPORT
  33. (* PROC *) WriteString, WriteInt, WriteCard, WriteLn, Write, Read;
  34.  
  35. (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
  36.  
  37. CONST
  38.  ERROR = LIC(-1);
  39.  
  40. VAR
  41.  limit  : SIGNEDLONG;
  42.  valStr : ARRAY [0..40] OF CHAR;
  43.  ch     : CHAR;
  44.  res    : INTEGER;
  45.  uts    : UtsnameRec;
  46.  
  47. (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
  48.  
  49. PROCEDURE TestVal ((* EIN/ -- *) proc   : ARRAY OF CHAR;
  50.                    (* EIN/ -- *) limit  : SIGNEDLONG    );
  51. BEGIN
  52.  WriteString(proc);
  53.  IF limit = ERROR THEN
  54.    IF e.errno <> 0 THEN
  55.      WriteString("**failed**:: ");
  56.      strerror(e.errno, valStr);
  57.      WriteString(valStr);
  58.      e.errno := 0;
  59.    ELSE
  60.      WriteString("nicht ermittelbar");
  61.    END;
  62.  ELSE
  63.    ltoa(limit, valStr, 10);
  64.    WriteString(valStr);
  65.  END;
  66.  WriteLn;
  67. END TestVal;
  68.  
  69. PROCEDURE TestBool ((* EIN/ -- *) proc   : ARRAY OF CHAR;
  70.                     (* EIN/ -- *) limit  : SIGNEDLONG;
  71.                     (* EIN/ -- *) yes    : ARRAY OF CHAR;
  72.                     (* EIN/ -- *) no     : ARRAY OF CHAR );
  73. BEGIN
  74.  WriteString(proc);
  75.  IF limit = ERROR THEN
  76.    IF e.errno <> 0 THEN
  77.      WriteString("**failed**:: ");
  78.      strerror(e.errno, valStr);
  79.      WriteString(valStr);
  80.      e.errno := 0;
  81.    ELSE
  82.      WriteString(no);
  83.    END;
  84.  ELSE
  85.    WriteString(yes);
  86.  END;
  87.  WriteLn;
  88. END TestBool;
  89.  
  90. (*===========================================================================*)
  91.  
  92. BEGIN
  93.  res := uname(uts);
  94.  WITH uts DO
  95.    WriteString("sysname  : "); WriteString(sysname); WriteLn;
  96.    WriteString("nodename : "); WriteString(nodename); WriteLn;
  97.    WriteString("release  : "); WriteString(release); WriteLn;
  98.    WriteString("version  : "); WriteString(version); WriteLn;
  99.    WriteString("machine  : "); WriteString(machine); WriteLn;
  100.  END;
  101.  WriteLn;
  102.  
  103.  e.errno := 0;
  104.  TestVal("sysconf(_SC_ARG_MAX) : ", sysconf(scArgMax));
  105.  
  106.  TestVal("sysconf(_SC_OPEN_MAX) : ", sysconf(scOpenMax));
  107.  
  108.  TestVal("sysconf(_SC_CHILD_MAX) : ", sysconf(scChildMax));
  109.  
  110.  TestVal("sysconf(_SC_CLK_TCK) : ", sysconf(scClkTck));
  111.  
  112.  TestVal("sysconf(_SC_VERSION) : ", sysconf(scVersion));
  113.  
  114.  TestBool("sysconf(_SC_JOB_CONTROL) : ", sysconf(scJobControl),
  115.           "wird unterstützt", "wird nicht unterstützt");
  116.  
  117.  TestBool("sysconf(_SC_SAVED_IDS) : ", sysconf(scSavedIds),
  118.           "wird unterstützt", "wird nicht unterstützt");
  119.  
  120.  limit := sysconf(scNGroupsMax);
  121.  ltoa(limit, valStr, 10);
  122.  TestBool("sysconf(_SC_NGROUPS_MAX) : ", limit, valStr,
  123.           "wird nicht unterstützt");
  124.  WriteLn;
  125.  
  126.  
  127.  TestVal('pathconf(".", _PC_LINK_MAX) : ', pathconf(".", pcLinkMax));
  128.  
  129.  TestVal('pathconf(".", _PC_PATH_MAX) : ', pathconf(".", pcPathMax));
  130.  
  131.  TestVal('pathconf(".", _PC_NAME_MAX) : ', pathconf(".", pcNameMax));
  132.  
  133.  TestVal('pathconf(".", _PC_PIPE_BUF) : ', pathconf(".", pcPipeBuf));
  134.  
  135.  TestVal('pathconf("/dev/tty", _PC_VDISABLE) : ',
  136.          pathconf("/dev/tty", pcVdisable));
  137.  
  138.  TestVal('pathconf("/dev/tty", _PC_MAX_CANON) : ',
  139.          pathconf("/dev/tty", pcMaxCanon));
  140.  
  141.  TestVal('pathconf("/dev/tty", _PC_MAX_INPUT) : ',
  142.          pathconf("/dev/tty", pcMaxInput));
  143.  
  144.  limit := pathconf(".", pcNoTrunc);
  145.  TestBool('pathconf(".", _PC_NO_TRUNC) : ', limit,
  146.           "Dateinamen werden nicht gekuerzt","Dateinamen werden gekuerzt");
  147.  
  148.  limit := pathconf(".", pcChownRestricted);
  149.  TestBool('pathconf(".", _PC_CHOWN_RESTRICTED) : ', limit,"ja", "nein");
  150.  
  151.  Read(ch);
  152. END tsys.
  153.